#ifndef MATERIAL
#define MATERIAL

#include "shader.h"
#include "rtype.h"

namespace sleek
{
    namespace mesh
    {
        class material
        {
            public:
                material();
                ~material();

                void setMode(render_mode);
                void setShader(shader*);
                void setPointSize(core::f32);
                void setShadeModel(core::u32);
                void setFaceCulling(core::u32);
                void setAntialiasing(core::u32);
                void setMaterialRender(core::u32);
                void setScale(core::math::vector3df);
                void setTexture(core::u32, texture::texture*);

                texture::texture* getTexture(core::u32);
                core::math::vector3df getScale();
                core::u32 getMaterialRender();
                core::u32 getAntialiasing();
                core::u32 getFaceCulling();
                core::u32 getShadeModel();
                core::f32 getPointSize();
                shader* getShader();
                GLuint getMode();

                void begin();
                void end();
            public:
                virtual void activeTexture(core::u32, texture::texture*);
                virtual void desactiveTexture(core::u32, texture::texture*);
            public:
                GLuint mode;
                shader *effect;
                core::f32 psize;
                core::math::array<texture::texture*> Texture;
                core::u32 ant, mat, shd, fac;
                core::math::vector3df scale;
        };
    }
}

#endif
